414. Third Maximum Number

1. Question

Given an integer array nums, return the third distinct maximum number in this array. If the third maximum does not exist, return the maximum number.

2. Examples

Example 1:

Input: nums = [3,2,1]
Output: 1
Explanation:
The first distinct maximum is 3.
The second distinct maximum is 2.
The third distinct maximum is 1.

Example 2:

Input: nums = [1,2]
Output: 2
Explanation:
The first distinct maximum is 2.
The second distinct maximum is 1.
The third distinct maximum does not exist, so the maximum (2) is returned instead.

Example 3:

Input: nums = [2,2,3,1]
Output: 1
Explanation:
The first distinct maximum is 3.
The second distinct maximum is 2 (both 2's are counted together since they have the same value).
The third distinct maximum is 1.

3. Constraints

  • 1 <= nums.length <= 104
  • -231 <= nums[i] <= 231 - 1

Follow up: Can you find an O(n) solution?

4. References

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/third-maximum-number 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

5. Solutions

利用treeset去重和排序。默认升序排列。

class Solution {
  public int thirdMax(int[] nums) {
    TreeSet<Integer> set = new TreeSet<>();
    for (int num : nums) {
      set.add(num);
      if (set.size() > 3) {
        set.remove(set.first());
      }
    }
    return set.size() == 3 ? set.first() : set.last();
  }
}
Copyright © rootwhois.cn 2021-2022 all right reserved,powered by GitbookFile Modify: 2023-03-05 10:55:51

results matching ""

    No results matching ""